#==============================================================
#FORM从docker仓库中获取基础镜像，在此镜像添加功能
#==============================================================
FROM java:8

#==============================================================
#ARG workdir=/tmp:添加变量，该变量只在当前的dockerfile中有效，如果换成ENV，则在容器中生效。
#==============================================================
ARG workdir=/tmp
ARG jarName=spring-cloud-kubernetes-loadbalancer-provider.jar

# 添加文件到WORKDIR并更改名称为app.jar 当前maven目录生成的文件复制到docker容器的/目录下
# 使用assembly参数配置后，jar包会拷贝到docker build目录下
ADD ./maven/${jarName} ../${workdir}/app.jar

#==============================================================
#VOLUME ${workdir}:把宿主机的目录（该目录可以通过docker inspect dockerName查看）挂载到容器中的${workdir}这个目录，
#这样可以在宿主机中查看该目录的内容。还有一个很重要的原因，就是数据持久化，如果不挂载，当容器关闭删除后，数据将会跟着被删除。
#这里因为${workdir}是应用所在的目录，该目录会产生日志等其它内容。
#==============================================================
VOLUME ${workdir}

#==============================================================
#WORKDIR ${workdir}:指定工作目录，下面的指令操作将在这个指定目录中执行。
#当通过交互模式的exec命令进入到该容器时，默认当前路径是/tmp
#==============================================================
WORKDIR ${workdir}

#==============================================================
#ENTRYPOINT： 运行容器后执行的第一条命令，这里通过java -jar命令运行应用。
#==============================================================
ENTRYPOINT ["java","-jar","app.jar"]